
// Language syntax highlighting

.syntax--comment {
  color: @gray;

  .syntax--markup.syntax--link {
    color: @gray;
  }
}

.syntax--entity {

  &.syntax--name.syntax--type {
    color: @yellow;
  }

  &.syntax--other.syntax--inherited-class {
    color: @green;
  }
}

.syntax--keyword {
  color: @purple;

  &.syntax--control {
    color: @purple;
  }

  &.syntax--operator {
    color: @syntax-text-color;
  }

  &.syntax--other.syntax--special-method {
    color: @blue;
  }

  &.syntax--other.syntax--unit {
    color: @orange;
  }
}

.syntax--storage {
  color: @purple;
}

.syntax--constant {
  color: @orange;

  &.syntax--character.syntax--escape {
    color: @cyan;
  }

  &.syntax--numeric {
    color: @orange;
  }

  &.syntax--other.syntax--color {
    color: @cyan;
  }

  &.syntax--other.syntax--symbol {
    color: @cyan;
  }
}

.syntax--variable {
  color: @red;

  &.syntax--interpolation {
    color: @brown;
  }

  &.syntax--parameter.syntax--function {
    color: @syntax-text-color;
  }
}

.syntax--invalid.syntax--illegal {
  background-color: @red;
  color: @syntax-background-color;
}

.syntax--string {
  color: @green;


  &.syntax--regexp {
    color: @cyan;

    .syntax--source.syntax--ruby.syntax--embedded {
      color: @yellow;
    }
  }

  &.syntax--other.syntax--link {
    color: @red;
  }
}

.syntax--punctuation {
  &.syntax--definition {
    &.syntax--parameters,
    &.syntax--array {
      color: @syntax-text-color;
    }

    &.syntax--heading,
    &.syntax--identity {
      color: @blue;
    }

    &.syntax--bold {
      color: @yellow;
      font-weight: bold;
    }

    &.syntax--italic {
      color: @purple;
      font-style: italic;
    }
  }

  &.syntax--section {
    &.syntax--embedded {
      color: @brown;
    }

    &.syntax--method,
    &.syntax--class,
    &.syntax--inner-class {
      color: @syntax-text-color;
    }
  }
}

.syntax--support {
  &.syntax--class {
    color: @yellow;
  }

  &.syntax--namespace {
    color: @yellow;
  }

  &.syntax--other {
    &.syntax--function {
      color: @blue;
    }
  }

  &.syntax--function {
    color: @cyan;

    &.syntax--any-method {
      color: @blue;
    }
  }
}

.syntax--entity {

  &.syntax--name.syntax--function {
    color: @blue;
  }

  &.syntax--name.syntax--class, &.syntax--name.syntax--type.syntax--class {
    color: @yellow;
  }

  &.syntax--name.syntax--section {
    color: @blue;
  }

  &.syntax--name.syntax--tag {
    color: @red;
  }

  &.syntax--other.syntax--attribute-name {
    color: @orange;

    &.syntax--id {
      color: @blue;
    }
  }
}

.syntax--meta {
  &.syntax--class:not(.syntax--block) {
    color: @yellow;

    &.syntax--body {
      color: @syntax-text-color;
    }
  }

  &.syntax--link {
    color: @orange;
  }

  &.syntax--method-call,
  &.syntax--method {
    color: @syntax-text-color;
  }

  &.syntax--require {
    color: @blue;
  }

  &.syntax--selector {
    color: @purple;
  }

  &.syntax--separator {
    background-color: #373b41;
    color: @syntax-text-color;
  }

  &.syntax--tag {
    color: @syntax-text-color;
  }
}

.syntax--none {
  color: @syntax-text-color;
}

.syntax--markup {
  &.syntax--bold {
    color: @orange;
    font-weight: bold;
  }

  &.syntax--changed {
    color: @purple;
  }

  &.syntax--deleted {
    color: @red;
  }

  &.syntax--italic {
    color: @purple;
    font-style: italic;
  }

  &.syntax--heading {
    color: @red;

    .syntax--punctuation.syntax--definition.syntax--heading {
      color: @blue;
    }
  }

  &.syntax--link {
    color: @blue;
  }

  &.syntax--inserted {
    color: @green;
  }

  &.syntax--quote {
    color: @orange;
  }

  &.syntax--raw {
    color: @green;
  }

  // Horizontal rules in GFM used to be scoped as `comment.hr`. For continuity,
  // we assign the color of a comment to this new scope.
  &.syntax--horizontal-rule {
    color: @gray;
  }
}

.syntax--source.syntax--gfm {
  .syntax--markup {
    -webkit-font-smoothing: auto;
  }

  .syntax--meta.syntax--link.syntax--text {
    color: @cyan;
  }

  .syntax--punctuation.syntax--definition.syntax--list-item {
    color: @red;
  }

  .syntax--markup.syntax--heading {
    .syntax--punctuation {
      color: inherit;
    }
  }

  .syntax--link .syntax--entity {
    color: @cyan;
  }
}
